It is a compile-time constant. A field or local variable which is declared as constant can be initialized with a constant expression which must be fully evaluated at compile time.
You can mark Constants as public, private, protected, internal, or protected internal access modifiers.
When to use
If you think that the value of field or local variable is never changed.
constint x = 10; constint y = 20; constint z = x + y; Console.WriteLine("The value of x :" + x); Console.WriteLine("The value of y :" + y); Console.WriteLine("The value of z :" + z);
int a = 15; constint b = x + a; Console.WriteLine("The value of b :" + b); //The variable 'a' is assigned but its value is never used
ReadOnly:-
It is same as Constant but it is run time constant. I mean to say that a ReadOnly field or local variable can be initialized either at the time of declaration or inside the constructor of same class. That is why we called it run time constant.
publicclass MyClassProgram { readonlyint x = 10; public MyClassProgram() { //changed the value in constructor x = 20; } }
As you know that we cannot declare Constant as static but we can do it for readonly explicitly. By default it is not static. It can be applied to value type and reference type [which initialized by using the new keyword)] both and also with delegate and event
When to use
If you think, you need to change the value of variable or field at run time inside the calling constructor, then you need to use the readonly modifier.
Liked By
Write Answer
difference between constant and read only in C#
Join MindStick Community
You have need login or register for voting of answers or question.
Shiva Shukla
24-Jan-2016When to use
If you think that the value of field or local variable is never changed.
As you know that we cannot declare Constant as static but we can do it for readonly explicitly. By default it is not static. It can be applied to value type and reference type [which initialized by using the new keyword)] both and also with delegate and event
When to use
If you think, you need to change the value of variable or field at run time inside the calling constructor, then you need to use the readonly modifier.